#include "stdio.h"
#include "graphics.h"
#define ROUND(a) ((int)(a+0.5))
void lineDDA();
main()
{
int ax,bx,ay,by,driver,mode; /* initial value */
clrscr();
printf("Enter Number of xa: "); /* input start&end line */
scanf("%d",&ax);
printf("Enter Number of ya: ");
scanf("%d",&ay);
printf("Enter Number of xb: ");
scanf("%d",&bx);
printf("Enter Number of yb: ");
scanf("%d",&by);
clrscr();
driver=VGA; /* set mode display */
mode=VGAHI;
initgraph(&driver,&mode,"");
gotoxy(300,0); /* show pont of start&end line */
printf("(x,y) Start:(%d,%d)",ax,ay);
gotoxy(300,0);
printf("(x,y) End:(%d,%d)",bx,by);
lineDDA(ax,ay,bx,by); /* call function lineDDA */
getch();
}
void lineDDA(int xa, int ya, int xb, int yb)
{
int dx = xb - xa, dy = yb - ya, steps, k; /* initial value */
float xIncrement, yIncrement, x = xa, y = ya;
if (abs (dx) > abs (dy)) steps = abs (dx); /* เช็คค่าผลต่างของ X และ Y ถ้าใช่ steps = ค่า abs(dx) */
else steps = abs (dy); /* ถ้าไม่ ค่า steps = abs(dy) */
xIncrement = dx / (float) steps; /* ค่า xIncrement = dx หารด้วย steps */
yIncrement = dy / (float) steps; /* ค่า yIncrement = dy หารด้วย steps */
putpixel(x,y,15); /* แสดงผล ณ ตำแหน่ง x,y กำหนด */
for (k=0; k<steps;k++) { /* วนลูปเพื่อทำการแสดงผลจนถึงจุดสิ้นสุด */
x += xIncrement; /* เพิ่มค่า x += xIncrement */
y += yIncrement; /* เพิ่มค่า y += yIncrement */
putpixel(x,y,15);
}
}